package net.blank.loop
{
	import flash.utils.setTimeout;

	/**
	 * 
	 * @author blank
	 * 
	 */
	public class LoopUtl
	{
		/**
		 * for 循环切片执行器(防止循环执行时间过长而造成程序卡死),<font color=#ff0000>注意:仅适用于单层循环</font>
		 * @param startInt 开始值
		 * @param endInt 终止值
		 * @param loopFunc 循环执行函数,必须接受两个 int 参数,分别表示 i 的开始值和终止值
		 * @param sliceLen 切片长度
		 * 
		 */
		public static function forLoopSliceRun(startInt:int,endInt:int,loopFunc:Function,sliceLen:int=100):void{
			var s:Vector.<int>=new Vector.<int>();
			var n:int=startInt;
			
			while(n<endInt){
				s.push(n);
				
				n += sliceLen;
				if(n >= endInt){
					s.push(endInt);
					break;
				}
			}
			
			run();
			
			function run():void{
				if(s.length > 1){
					loopFunc.apply(null,[s[0],s[1]]);
					s.shift();
					
					setTimeout(run,1);
				}
			}
		}
	}
}